Input - Output |
As input - output processes are externally affected they may exhibit delays. Thus, input - output programming such as sockets or pipes may result in wasting CPU processing time. To solve this problem Microsoft designed the Input-Output Completion Port (IOCP). Anything that is outside the processor is very slow, so if the processor has to wait to read from or write to an input/output device the overall performance is greatly affected. An input-output completion port can be used with:
Como los procesos de entrada-salida son afectados en forma externa, estos pueden exhibir retrasos. Así, la programación de entrada y salida tal como los sockets o los tubos pueden resultar en un desperdicio de tiempo del CPU. Para resolver este problema Microsoft diseño el Input-Output Completion Port (IOCP). Cualquier cosa que está afuera del procesador es muy lenta, así si el procesador tiene que esperar para leer desde o escribir hacia un dispositivo de entrada/salida el desempeño global se verá grandemente afectado. Un Input-Output completion port puede ser usando con:
|
Input - Output Completion Port |
Wintempla provides the Mt::IOCPort class to ease the use of the Input-Output Completion Port. It is strongly recommended to inspect this class. One of the main advantages of using an Input-Output Completion port is that all input and output operations are performed asynchronously. Thus one thread is not wasted waiting on input or output operations to complete. As an Input-Output Completion Port is an advanced Kernel object, the programmer must understand perfectly several advance programming techniques to get the best of the IOCP. Wintempla proporciona la clase Mt::IOCP para facilitar el uso del puerto de completado de entrada y salida. Se le sugiere que usted inspeccione esta clase. Una de las principales ventajas de usar un puerto de completado de entrada y salida es que todas las operaciones de entrada y de salida se realizan en forma asíncrona. Así no es necesario desperdiciar una thread que espere a que terminen las operaciones de entrada y salida. Ya que el puerto de completado de entrada y salida es un objeto avanzado de Kernel, el programador debe entender perfectamente varias técnicas avanzadas para obtener lo mejor del IOCP. |
Tip |
An IOCP is usually associated with an input-output device. The program may queue several input-output operations without having to wait for each operation to complete. Then, the IOCP will send a notification, called completion key, when each input-output operations completes. The program, then, may queue more input - output operations. IOCPs are typically used in server programming where CPU time cannot be wasted. The figure below shows how an IOCP works, when the first output operation is completed, the IOCP sends the respective completion key to the program. An IOCport limits the number of threads that the system allows running concurrently (to one thread per processor in the system). Un IOCP se asocia usualmente a un dispositivo de entrada-salida. El programa puede colocar en la cola varias operaciones de entrada y salida sin esperar a que cada operación complete. Entonces, el IOCP enviará una notificación, llamada completion key, cuando cada operación de entrada-salida se complete. El programa, entonces, puede colocar en la cola otras operaciones de entrada-salida. Los IOCPs son usados típicamente en programas en el servidor donde no se debe desperdiciar el tiempo del CPU. La figura de abajo muestra cómo opera un IOCP, cuando la primera operación de salida se completa, el IOCP envía la respectiva completion key al programa. Un IOCPort limita el número de hilos que el sistema permite su ejecución en forma simultánea (a un hilo por procesador en el sistema). |